package com.nkzy.controller;

import com.nkzy.pojo.Result;
import com.nkzy.utils.JwtUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/article")
public class ArticleController {
    @GetMapping("/list")
    public Result list(@RequestHeader(name = "Authorization") String token, HttpServletResponse response){
        //验证token

       try {
           Map<String, Object> claims = JwtUtil.parseToken(token);
           return Result.success("显示所有的文章列表");

       }catch (Exception e){
           response.setStatus(401);
           return Result.error("未登录");
       }

    }
    /**
     * 我们没 有登录，也可以访问文章列表，这是一个Bug，需求：只有用户登录成功，才能
     * 访问和用户相关的信息，包括文章模块、分类模块
     * 所以我们需要进行登录认证：
     * 一、会话技术
     * 会话：用户打开浏览器，访问Web服务器的资源，会话建立，直到有一方断开连接，
     * 会话结束，在一次会话中可以包含多次请求和响应。
     * 会话跟踪：一种维护浏览器状态的方法，服务器需要识别多次请求是否来自同一浏览器，以便
     * 在同一次会话的多次请求间共享数据。
     * 会话跟踪的方案：
     * 1.客户端会话跟踪技术：Cookie
     * 2.服务器会话跟踪技术：Session
     * 3.令牌技术
     * Cookie会话技术：由服务器产生内容，浏览器收到请求后保存到本地；当浏览器再次访问
     * 时，浏览器会自动带上Cookie，这样服务器就能通过Cookie的内容判断。
     * Session会话技术：底层也是基于Cookie，Seesion采用的是在服务器端保存状态的方案。
     * JWT令牌技术：
     * 全称：JSON Web Token
     * 作用：定义了一种简洁的、自包含的模式，用于在通讯双方以JSON数据格式安全的传输
     * 信息，由于数字签名的存在，这些信息是可靠的。
     * 组成：
     * 第一部分：Header（头）
     * 第二部分：
     * 第三部分：签名，加密算法
     * 拦截器Interceptor
     * 概念：是一种动态拦截方法调用的机制 类似于Filter（过滤器）
     * 是Java Web 三大组件（Servlet,Filter,Listener）
     * Interceptor: j Spring Boot框架中的一种技术，主要实现对Controller中的方法进行拦截
     * Interceptor实现步骤：
     * 1定义拦截器类：实现HandlerInterceptor接口，并重写其方法
     * 2注册拦截器
     */
}
